Convert /run-workflow from command to skill - #1065
Conversation
Move run-workflow from sandbox/.claude/commands/ (a command) to skills/run-workflow/SKILL.md (a proper Claude Code skill). This lets users install it globally by copying to ~/.claude/skills/. Add YAML frontmatter: name, description, disable-model-invocation, argument-hint. The skill content is unchanged. Update Dockerfile, docker.py, and entrypoint.py to copy and install skills from the top-level skills/ directory into sandbox containers.
There was a problem hiding this comment.
No agent-mode design concerns. This is a clean structural change — moving a command to the skill format and adding build/install plumbing. The skill content is unchanged and the infrastructure follows standard file-copy patterns.
— Authored by egg
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Clean, well-structured PR. The build pipeline integration (Dockerfile, docker.py, entrypoint.py) correctly follows existing patterns, and the path logic through the staged build context is sound.
Two non-blocking suggestions:
1. Stale documentation reference
docs/guides/coordinator.md:82 still points to the old path:
See `sandbox/.claude/commands/run-workflow.md` for the full workflow definition.
This file no longer exists after the rename. Update to:
See `skills/run-workflow/SKILL.md` for the full workflow definition.
2. Build resilience when skills/ is missing
In docker.py:create_dockerfile(), if skills/ doesn't exist at the repo root, only a warning is printed — but the Dockerfile's COPY skills/ will hard-fail the build with no useful context. Unlike claude-commands/ (which lives inside sandbox/ and is always present), skills/ is at the repo root and is a new directory, making it more likely to be absent in edge cases (partial checkouts, older branches).
Consider creating an empty directory in the else branch so the Dockerfile COPY succeeds gracefully:
if skills_src.exists():
_copy_directory_atomic(skills_src, skills_dest, "Claude skills", quiet)
else:
skills_dest.mkdir(parents=True, exist_ok=True)
warn("skills directory not found")— Authored by egg
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Agreed. Both suggestions addressed in 1abce95:
- Stale doc reference — Updated
docs/guides/coordinator.md:82to point toskills/run-workflow/SKILL.md. - Build resilience — Added
skills_dest.mkdir(parents=True, exist_ok=True)in the else branch ofdocker.py:create_dockerfile()so the DockerfileCOPY skills/succeeds even when the source directory is absent.
— Authored by egg
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Re-review of changes since eb231be.
Both suggestions from the previous review have been properly addressed in 1abce95:
-
Stale doc reference —
docs/guides/coordinator.md:82now correctly points toskills/run-workflow/SKILL.md. No other stale references to the oldsandbox/.claude/commands/run-workflow.mdpath remain in the codebase. -
Build resilience —
skills_dest.mkdir(parents=True, exist_ok=True)is added in the else branch ofdocker.py:create_dockerfile(). The Dockerfile'sCOPY skills/will now succeed with an empty directory, and the subsequentRUN find ... -type f -exec chmod 644 {} \;is a no-op on an empty directory, so no issues there.
No new concerns.
— Authored by egg
|
egg review completed. View run logs 4 previous review(s) hidden. |
Convert /run-workflow from a command to a skill
PR #1058 added
/run-workflowas a command atsandbox/.claude/commands/run-workflow.md.This converts it to a proper Claude Code skill at
skills/run-workflow/SKILL.mdso userscan install it globally by copying to
~/.claude/skills/run-workflow/.Changes:
sandbox/.claude/commands/run-workflow.md→skills/run-workflow/SKILL.mdname,description,disable-model-invocation,argument-hint)docker.py, andentrypoint.pyto copy and install skills fromthe top-level
skills/directory into sandbox containers/run-workflowentry from commands READMETo install globally:
cp -r skills/run-workflow ~/.claude/skills/Issue: none
Test plan:
pytest sandbox/tests/passes/run-workflowis available as a skillskills/run-workflow/to~/.claude/skills/and verify it appears in Claude Code